/*
 * Lissajous.cpp
 *
 *  Created on: 2023年3月7日
 *      Author: Jiapeng Chen
 **       三维李萨如曲线轨迹
 */
#ifndef MODULES_TRAJECTORY_LISSAJOUS_HPP_
#define MODULES_TRAJECTORY_LISSAJOUS_HPP_

#include "system/system.hpp"
#include "userlib/userlib.hpp"

#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}
#endif

#ifdef __cplusplus
#include <Eigen>
using namespace Eigen;
using namespace std;

class TRAJECTORY_LISSAJOUS
{
public:
//	TRAJECTORY_LISSAJOUS(){}
	TRAJECTORY_LISSAJOUS(float d0 = 1.0f, float x0 = 0.0f, float y0 = 0.0f, float z0 = 0.0f, float A0 = 0.6f, float B0 = 0.6f, float C0 = 0.2f, float a0 = 0.4, float b0 = 0.4f, float c0 = 0.6f)
	{
		this -> d = d0;
		this -> A = A0;
		this -> B = B0;
		this -> C = C0;
		this -> a = a0;
		this -> b = b0;
		this -> c = c0;
	}
	~TRAJECTORY_LISSAJOUS(){}
	float getPos_x(float t);
	float getPos_y(float t);
	float getPos_z(float t);
	float getVel_x(float t);
	float getVel_y(float t);
	float getVel_z(float t);
	float getAcc_x(float t);
	float getAcc_y(float t);
	float getAcc_z(float t);
	float getOffset_x();
	float getOffset_y();
	float getOffset_z();

	void setOffset(float val_x,float val_y,float val_z);
private:
	float d;
	float offset_x;
	float offset_y;
	float offset_z;
	float A;
	float B;
	float C;
	float a;
	float b;
	float c;

};

#endif


#endif
